﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Ferreteria.Forms.GestionArticulos
{
    public partial class ActualizarPrecios : Form
    {

        DisancoEntities context;
        DataTable dtCateg;
        DataTable dtArt;
        private DataGridViewSelectedRowCollection artActprecios;
        private int categoriaID;
        Font fontNegrita = new Font("Callibri", 11, FontStyle.Bold);
        Font fontNormal = new Font("Callibri", 11, FontStyle.Regular);

        public ActualizarPrecios()
        {
            InitializeComponent();
            context = new DisancoEntities(Ferreteria.Clases.Constantes.cadenaConexion);
            radbtnAumento.Checked = true;
            cmbRubros.ValueMember = "rubro_id";
            cmbRubros.DisplayMember = "rubro_nombre";
            cmbRubros.DataSource = context.Rubros;
         }

        private void cmbRubros_SelectedIndexChanged(object sender, EventArgs e)
        {
            CargarGrillaCateg();
        }

        private void CargarGrillaCateg()
        {
            
            dtCateg = new DataTable();
            dtCateg.Columns.Add("categ_id");
            dtCateg.Columns.Add("rubro_id");
            dtCateg.Columns.Add("categ_nombre");
            
            context = new DisancoEntities(Ferreteria.Clases.Constantes.cadenaConexion);
            int rubroid = Convert.ToInt16(cmbRubros.SelectedValue);

            dtCateg.Rows.Clear();

            foreach (var categ in context.Categorias)
            {
                if (categ.rubro_id == rubroid)
                {
                    DataRow fila = dtCateg.NewRow();
                    fila["categ_id"] = categ.categ_id;
                    fila["rubro_id"] = categ.rubro_id;
                    fila["categ_nombre"] = categ.categ_nombre;
                    dtCateg.Rows.Add(fila);
                }
            }
            dgvCategorias.DataSource = dtCateg;
            dgvCategorias.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvCategorias.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvCategorias.Columns["categ_id"].Visible = false;
            dgvCategorias.Columns["categ_nombre"].HeaderText = "Categorias";
            dgvCategorias.Columns["rubro_id"].Visible = false;
            dgvCategorias.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
           
        }
                
        private void dgvCategorias_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            context = new DisancoEntities(Ferreteria.Clases.Constantes.cadenaConexion);
            int categid = Convert.ToInt32(dgvCategorias[0, dgvCategorias.CurrentRow.Index].Value.ToString());
            categoriaID = categid;
            CargarGrillaArticulos(categid);
            
          
        }

        private void CargarGrillaArticulos(int CategoriaID)
        {
            int categid = CategoriaID;

            dtArt = new DataTable();
            dtArt.Columns.Add("art_id");
            dtArt.Columns.Add("art_codigo");
            dtArt.Columns.Add("art_nombre");
            dtArt.Columns.Add("art_precio_lista");
            dtArt.Columns.Add("art_bonificacion");
            dtArt.Columns.Add("art_precio_bonificado");
            dtArt.Columns.Add("art_precio_oferta");
            dtArt.Rows.Clear();

            foreach (var art in context.Articulos)
            {
                if (art.categ_id == categid)
                {
                    DataRow fila = dtArt.NewRow();
                    fila["art_id"] = art.art_id;
                    fila["art_codigo"] = art.art_codigo;
                    fila["art_nombre"] = art.art_nombre;
                    fila["art_precio_lista"] = "$ " + art.art_precio_lista;
                    fila["art_bonificacion"] = "% " + art.art_bonificacion;
                    decimal preciobonif = Math.Round(Convert.ToDecimal(art.art_precio_bonificado), 2);
                    fila["art_precio_bonificado"] = "$ " + preciobonif;
                    fila["art_precio_oferta"] = "$ " + art.art_precio_oferta;
                    dtArt.Rows.Add(fila);
                }
            }
            dgvArticulos.DataSource = dtArt;
            dgvArticulos.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvArticulos.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvArticulos.Columns["art_id"].Visible = false;
            dgvArticulos.Columns["art_codigo"].HeaderText = "Codigo";
            dgvArticulos.Columns["art_nombre"].HeaderText = "Articulo";
            dgvArticulos.Columns["art_precio_lista"].HeaderText = "Precio Lista";
            dgvArticulos.Columns["art_bonificacion"].HeaderText = "Bonificacion";
            dgvArticulos.Columns["art_precio_bonificado"].HeaderText = "Precio Bonificado";
            dgvArticulos.Columns["art_precio_oferta"].HeaderText = "Precio Oferta";
            dgvArticulos.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnActPrecioOferta_Click(object sender, EventArgs e)
        {
            DataGridViewSelectedRowCollection filasSeleccionadas = dgvArticulos.SelectedRows;

            if (filasSeleccionadas.Count > 1)
            {
                DialogResult dr = MessageBox.Show("¿Seguro que desea Actualizar el Precio de Oferta de los Articulos?", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dr == DialogResult.Yes)
                {
                    ActualizarPreciosOferta(filasSeleccionadas, categoriaID);
                }
            }
            else
                if (filasSeleccionadas.Count == 1)
                {
                DialogResult dr = MessageBox.Show("¿Seguro que desea Actualizar el Precio de Oferta de este Articulo?", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                
                if (dr == DialogResult.Yes)
                {
                    ActualizarPreciosOferta(filasSeleccionadas, categoriaID);
                }
                }
            else
            {
               if (filasSeleccionadas.Count == 0)
                         MessageBox.Show("Debe Seleccionar algun Articulos para Actualizar su Precio ", "Disanco Sanitarios", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void ActualizarPreciosOferta(DataGridViewSelectedRowCollection seleccion, int categid)
        {
            artActprecios = seleccion;
            foreach (DataGridViewRow fila in artActprecios)
            {
                int artId = Convert.ToInt16(fila.Cells[0].Value);
                    //(int)fila.Cells["art_id"].Value;
                Articulos articulo = context.Articulos.FirstOrDefault(a => a.art_id == artId);

                decimal tasa = (NumUpDowPrecioOf.Value / 100);
                if (radbtnAumento.Checked == true)
                {
                    decimal nuevoprecioof = (articulo.art_precio_oferta * (1 + tasa));
                    articulo.art_precio_oferta = Math.Round(nuevoprecioof, 2);
                }
                else
                if (radbtnDecremento.Checked == true)
                {
                    decimal nuevoprecioof = (articulo.art_precio_oferta / (1 + tasa));
                    articulo.art_precio_oferta = Math.Round(nuevoprecioof, 2);
                }
            }
            MessageBox.Show("Datos actualizados correctamente", "Operacion Exitosa", MessageBoxButtons.OK, MessageBoxIcon.Information);
            context.SaveChanges();
            NumUpDowPrecioOf.Value = NumUpDowPrecioOf.Minimum;
            //CargarGrillaCateg();
            int catid = categid;
            CargarGrillaArticulos(catid);
        }

        private void dgvArticulos_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            //NumUpDowPrecioOf.Enabled = true;
        }

        private void radbtnAumento_CheckedChanged(object sender, EventArgs e)
        {
            if (radbtnAumento.Checked)
            {
                radbtnAumento.Font = fontNegrita;
                radbtnDecremento.Font = fontNormal;
            }
        }

        private void radbtnDecremento_CheckedChanged(object sender, EventArgs e)
        {
            if (radbtnDecremento.Checked)
            {
                radbtnAumento.Font = fontNormal;
                radbtnDecremento.Font = fontNegrita;
            }
        }
    }
}
